﻿namespace _3_NovaAdmin.Domain.Abstractions;

/// <summary>
/// 工作单元的接口，它继承自 IDisposable 接口，表示该接口的实现类需要支持资源释放操作
/// </summary>
public interface IUnitOfWork //: IDisposable
{
    /// <summary>
    /// 于保存对数据库的更改，返回操作是否成功
    /// </summary>
    /// <param name="cancellationToken">可选参数，默认值为 default，它用于支持取消操作的机制</param>
    /// <returns></returns>
    Task<bool> SaveChangesAsync(CancellationToken cancellationToken = default);

    /// <summary>
    /// 用于保存对数据库的更改，返回受影响的数据库行数
    /// </summary>
    /// <param name="cancellationToken">可选参数，默认值为 default，它用于支持取消操作的机制</param>
    /// <returns></returns>
    Task<int> SaveEntitiesAsync(CancellationToken cancellationToken = default);
}
